An application program or system running on a computer may be customized to meet the specific requirements of a group of users, such as a particular company or a particular department in a company. Examples of application programs or systems include, for example, an enterprise resource management system, a financial management system, a human resources management system, a supply chain management system, and a marketing system. Examples of system customization include customization of the data model, the process model, or the user interface of the system. Customization of a system may require knowledge of the data model of the system and programming techniques used to develop the system.
A particular group of users, such as a company, may require the same or similar customizations to be applied to more than one system. For example, a particular customization may need to be applied to more than one instance of the same system (e.g., a development instance, a testing instance, and a production instance of a particular system) or may need to be applied to more than one system (e.g., a financial management system and a human resources management system). The systems to which an extension may need to be applied may use different programming techniques or models (e.g., a financial management system may use object-oriented technology to represent financial information, while a human resource management system uses a distributed relational database system to represent human resources information).